//package work.rightAnswer;
//
//import java.util.ArrayList;
//import java.util.List;
//
//class Solution_77 {
//    public List<List<Integer>> res = new ArrayList<>();
//    public List<Integer> path = new ArrayList<>();
//    public List<List<Integer>> combine(int n, int k) {
//        //组合问题：1-n中所有可能的k个数的组合 方案：回溯算法
//        tracking(n,k,1);
//        return res;
//    }
//
//    //递归+遍历
//    //求出所有组合类型，n：数字范围为1-n，k：组合大小为k，startIndex:本次递归的起始遍历索引
//    public void tracking(int n,int k,int startIndex){
//        //终止条件：当path长度==k时
//        if(path.size()==k){
//            res.add(new ArrayList<>(path));
//            return;
//        }
//
//
//        //剪枝优化：k-count为组合剩下需要的数字数量，i<=i<=(n-(k-path.size())+1)
//        for (int i = startIndex; i<=(n-(k-path.size())+1) ; i++) {
//            //递归前的操作
//            path.add(i);
//            tracking(n,k,i+1);
//            path.remove(path.size()-1);
//        }
//    }
//}